package com.hk.employeemanagementsystem.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * @author by 何坤
 * @Classname EmployeeEntity
 * @Description TODO
 * @Date 2019/12/18 9:46
 */
@TableName("tab_employee")
public class EmployeeEntity {
    @TableId(value = "emp_id", type = IdType.AUTO)
    private int id;

    @TableField(value = "emp_work_id")
    private String workId;

    @TableField(value = "emp_name")
    private String name;

    @TableField(value = "emp_id_card")
    private String idCard;

    @TableField(value = "emp_gender")
    private Boolean gender;

    @TableField(value = "emp_birthday")
    private Date birthday;

    @TableField(value = "emp_marital_status")
    private Boolean maritalStatus;

    @TableField(value = "emp_native_place")
    private String nativePlace;

    @TableField(value = "emp_phone")
    private String phone;

    @TableField(value = "emp_email")
    private String email;

    @TableField(value = "emp_address_region")
    private String addressRegion;

    @TableField(value = "emp_address_detailed")
    private String addressDetailed;

    @TableField(value = "emp_hire_form")
    private String hireForm;

    @TableField(value = "emp_highest_education")
    private String highestEducation;

    @TableField(value = "emp_specialty")
    private String specialty;

    @TableField(value = "emp_school")
    private String school;

    @TableField(value = "emp_begin_date")
    private Date beginDate;

    @TableField(value = "emp_work_status")
    private Boolean workStatus;

    @TableField(value = "emp_contract_term")
    private Integer contractTerm;

    @TableField(value = "emp_conversion_time")
    private Date conversionTime;

    @TableField(value = "emp_term_date")
    private Date termDate;

    @TableField(value = "emp_contract_start_time")
    private Date contractStartTime;

    @TableField(value = "emp_contract_end_time")
    private Date contractEndTime;

    @TableField(value = "emp_work_age")
    private Integer workAge;

    @TableField(value = "emp_nation_id")
    private Integer nationId;

    @TableField(value = "emp_politic_id")
    private Integer politicId;

    @TableField(value = "emp_department_id")
    private Integer departmentId;

    @TableField(value = "emp_job_level_id")
    private Integer jobLevelId;

    @TableField(value = "emp_position_id")
    private Integer positionId;

    @TableField(exist = false)
    private NationEntity nation;

    @TableField(exist = false)
    private PoliticalEntity political;

    @TableField(exist = false)
    private DepartmentEntity department;

    @TableField(exist = false)
    private JobLevelEntity jobLevel;

    @TableField(exist = false)
    private PositionEntity position;


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getWorkId() {
        return workId;
    }

    public void setWorkId(String workId) {
        this.workId = workId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getIdCard() {
        return idCard;
    }

    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    public Boolean getGender() {
        return gender;
    }

    public void setGender(Boolean gender) {
        this.gender = gender;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public Boolean getMaritalStatus() {
        return maritalStatus;
    }

    public void setMaritalStatus(Boolean maritalStatus) {
        this.maritalStatus = maritalStatus;
    }

    public String getNativePlace() {
        return nativePlace;
    }

    public void setNativePlace(String nativePlace) {
        this.nativePlace = nativePlace;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getAddressRegion() {
        return addressRegion;
    }

    public void setAddressRegion(String addressRegion) {
        this.addressRegion = addressRegion;
    }

    public String getAddressDetailed() {
        return addressDetailed;
    }

    public void setAddressDetailed(String addressDetailed) {
        this.addressDetailed = addressDetailed;
    }

    public String getHireForm() {
        return hireForm;
    }

    public void setHireForm(String hireForm) {
        this.hireForm = hireForm;
    }

    public String getHighestEducation() {
        return highestEducation;
    }

    public void setHighestEducation(String highestEducation) {
        this.highestEducation = highestEducation;
    }

    public String getSpecialty() {
        return specialty;
    }

    public void setSpecialty(String specialty) {
        this.specialty = specialty;
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }

    public Date getBeginDate() {
        return beginDate;
    }

    public void setBeginDate(Date beginDate) {
        this.beginDate = beginDate;
    }

    public Boolean getWorkStatus() {
        return workStatus;
    }

    public void setWorkStatus(Boolean workStatus) {
        this.workStatus = workStatus;
    }

    public Integer getContractTerm() {
        return contractTerm;
    }

    public void setContractTerm(Integer contractTerm) {
        this.contractTerm = contractTerm;
    }

    public Date getConversionTime() {
        return conversionTime;
    }

    public void setConversionTime(Date conversionTime) {
        this.conversionTime = conversionTime;
    }

    public Date getTermDate() {
        return termDate;
    }

    public void setTermDate(Date termDate) {
        this.termDate = termDate;
    }

    public Date getContractStartTime() {
        return contractStartTime;
    }

    public void setContractStartTime(Date contractStartTime) {
        this.contractStartTime = contractStartTime;
    }

    public Date getContractEndTime() {
        return contractEndTime;
    }

    public void setContractEndTime(Date contractEndTime) {
        this.contractEndTime = contractEndTime;
    }

    public Integer getWorkAge() {
        return workAge;
    }

    public void setWorkAge(Integer workAge) {
        this.workAge = workAge;
    }

    public Integer getNationId() {
        return nationId;
    }

    public void setNationId(Integer nationId) {
        this.nationId = nationId;
    }

    public Integer getPoliticId() {
        return politicId;
    }

    public void setPoliticId(Integer politicId) {
        this.politicId = politicId;
    }

    public Integer getDepartmentId() {
        return departmentId;
    }

    public void setDepartmentId(Integer departmentId) {
        this.departmentId = departmentId;
    }

    public Integer getJobLevelId() {
        return jobLevelId;
    }

    public void setJobLevelId(Integer jobLevelId) {
        this.jobLevelId = jobLevelId;
    }

    public Integer getPositionId() {
        return positionId;
    }

    public void setPositionId(Integer positionId) {
        this.positionId = positionId;
    }

    public NationEntity getNation() {
        return nation;
    }

    public void setNation(NationEntity nation) {
        this.nation = nation;
    }

    public PoliticalEntity getPolitical() {
        return political;
    }

    public void setPolitical(PoliticalEntity political) {
        this.political = political;
    }

    public DepartmentEntity getDepartment() {
        return department;
    }

    public void setDepartment(DepartmentEntity department) {
        this.department = department;
    }

    public JobLevelEntity getJobLevel() {
        return jobLevel;
    }

    public void setJobLevel(JobLevelEntity jobLevel) {
        this.jobLevel = jobLevel;
    }

    public PositionEntity getPosition() {
        return position;
    }

    public void setPosition(PositionEntity position) {
        this.position = position;
    }

    @Override
    public String toString() {
        return "EmployeeEntity{" +
                "id=" + id +
                ", workId='" + workId + '\'' +
                ", name='" + name + '\'' +
                ", idCard='" + idCard + '\'' +
                ", gender=" + gender +
                ", birthday=" + birthday +
                ", maritalStatus=" + maritalStatus +
                ", nativePlace='" + nativePlace + '\'' +
                ", phone='" + phone + '\'' +
                ", email='" + email + '\'' +
                ", addressRegion='" + addressRegion + '\'' +
                ", addressDetailed='" + addressDetailed + '\'' +
                ", hireForm='" + hireForm + '\'' +
                ", highestEducation='" + highestEducation + '\'' +
                ", specialty='" + specialty + '\'' +
                ", school='" + school + '\'' +
                ", beginDate=" + beginDate +
                ", workStatus='" + workStatus + '\'' +
                ", contractTerm=" + contractTerm +
                ", conversionTime=" + conversionTime +
                ", termDate=" + termDate +
                ", contractStartTime=" + contractStartTime +
                ", contractEndTime=" + contractEndTime +
                ", workAge=" + workAge +
                ", nationId=" + nationId +
                ", politicId=" + politicId +
                ", departmentId=" + departmentId +
                ", jobLevelId=" + jobLevelId +
                ", positionId=" + positionId +
                ", nation=" + nation +
                ", political=" + political +
                ", department=" + department +
                ", jobLevel=" + jobLevel +
                ", position=" + position +
                '}';
    }
}
